package org.example.day02;

import java.util.*;

/**
 * @author zlxad
 * @version 1.0
 * @description: TODO +
 * 小明今年升学到小学一年级，来到新班级后发现其他小朋友们身高参差不齐，然后就想基于各小朋友和自己的身高差对他们进行排序，请帮他实现排序。
 * @date 2024/3/11 15:22
 */
public class test026 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 读取小明的身高和其他小朋友的个数
        int mingHeight = scanner.nextInt();
        int numFriends = scanner.nextInt();

        // 创建一个列表用于存储其他小朋友的身高
        List<Integer> friendHeights = new ArrayList<>();

        // 读取其他小朋友的身高并添加到列表中
        for (int i = 0; i < numFriends; i++) {
            int height = scanner.nextInt();
            friendHeights.add(height);
        }

        // 使用Collections.sort方法对列表进行排序
        // 通过自定义的Comparator来比较两个身高的差值和身高本身，实现排序要求
        Collections.sort(friendHeights, (h1, h2) -> {
            // 计算和小明身高的差值的绝对值
            int diff1 = Math.abs(h1 - mingHeight);
            int diff2 = Math.abs(h2 - mingHeight);

            // 如果差值相同，按身高进行比较，个子较小的排在前面
            if (diff1 == diff2) {
                return h1 - h2;
            }

            // 差值不同，差值小的排在前面
            return diff1 - diff2;
        });

        // 输出排序结果
        for (int height : friendHeights) {
            System.out.print(height + " ");
        }
    }
}

